package StackFiles;

/*
 * Interfaz de un Stack que permite trabaja con cualquier Valor
 */

/**
 *
 * @author Alejandra Samayoa
 * @param <Tipo> Parametro del tipo generico que acepta cualquier tipo de dato
 */
public interface Stack<Tipo> {
    /**
     * Introduce un elemento al Stakc
     * * post: item sera agregado al stack
     * sera el siguiente en ser sacado en caso no se realice otro push
     * @param item elemento que se ingresa al stack
     */
public void push(Tipo item);

/**
 * Saca un elemento del Stack
 * pre: stack no esta vacio
 * post: el ultimo elemento que ha sido 'push' saldra del stack
 * @return regresa el ultimo elemento que fue ingresado al Stack y este es eliminado del stack
 */
public Tipo pop();
/**
 * pre: el stack no esta vacio
 * post: el valor del elemento que fue hecho push de ultimo sera devuelto
 * @return regresa el ultimo elemento que fue ingresado al Stack 
 */
public Tipo getFirst();

/**
 * Verifica si el Stack tiene o no elementos
 * post: regresa si el stack esta vacio (true) y si esta vacio (false)
 * @return regresa true si el stack esta vacio
 */
public boolean empty();

/**
 * 
 * @return devuelve el numero de elementos que estan adentro del Stack
 */
public int getSize();
// post: regresa el numero de leementos en el Stack
}
